﻿//Modulo Usuario
Ext.ns("AppUser");
// 
AppUser.Persona = {
   
    //Setear combos de localidad de persona
    SetLocalidad: function (idWuc, idProv, idCanton, idParroquia, idNacionalidad) {
        try{
            App.direct.wuc_persona.GetCanton(idProv, idCanton, {
                success: function (result) {
                    var cpm = Ext.getCmp(idWuc + '_' + 'cbbProvincia');
                    if (cpm) {
                       
                        cpm.select(idProv, true);
                    }

                    cpm = Ext.getCmp(idWuc + '_' + 'cbbCanton');
                    if (cpm) {
                        cpm.getStore().loadData(result.ListCanton);
                        cpm.select(idCanton, true);
                    }

                    cpm = Ext.getCmp(idWuc + '_' + 'cbbParroquia');
                    if (cpm) {
                        cpm.getStore().loadData(result.ListParroq);
                        cpm.select(idParroquia, true);
                    }
                   
                    cpm = Ext.getCmp(idWuc + '_' + 'cbxNacionalidad');
                    if (cpm)
                    {
                       
                            cpm.select(idNacionalidad, true);
                    }
                },
                eventMask: {
                    showMask: true,
                    minDelay: 500
                }
            });
        } catch (jsbug) {
            AppGlobalJs.showBug("AppUser.Persona.SetLocalidad: " + jsbug)
        }
    }, 
    //Modificar propiedad [Name] de formulario
    SetFormName: function (idName, me) {
        try{
            var myName = '';
            fields = me.getForm().getFields();
            fields.each(function (field) {
                if (field.name) {
                    myName = field.name + '_' + idName;
                    field.allowBlank = false;
                    field.name = myName;
                }
            });
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.Persona.SetFormName: " + jsbug)
        }
    }
},
AppUser.Global = {
    // Modificar propiedad [AallowBlank]
    SetAllowBlank: function ( me,val) {
        try{
            fields = me.getForm().getFields();
            fields.each(function (field) {
                field.allowBlank =val;
                        
            });
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.Global.SetAllowBlank: " + jsbug)
        }
    },
    //Obtener array de errores de formulario
    GetListErrors: function (me)
    {
        try{
            var  fields, errors;
            fields = me.getForm().getFields();
            errors = [];
            fields.each(function (field) {
                var listError = field.getErrors();
                if (listError.length == 0)
                    listError = field.getActiveErrors();

                Ext.Array.forEach(listError, function (error) {
                    errors.push({ name: field.getFieldLabel() || field.getName(), error: error });
                });
            });
            return (errors);
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.Global.GetListErrors: " + jsbug)
        }
    },
    //Modificar Icono de error y tips de errores
    SetErrors: function (cmp, errors, viewTip) {
        try{
            var me = cmp,
                baseCls = me.baseCls,
                tip = me.tooltips[0];
            errors = Ext.Array.from(errors);
            // Update CSS class and tooltip content
            if (errors.length) {
                me.addCls(baseCls + '-invalid');
                me.removeCls(baseCls + '-valid');
                me.update("Formulario con errores");
                tip.setDisabled(false);
                   
                tip.update(me.bin[0].apply(errors));
            } else {
                me.addCls(baseCls + '-valid');
                me.removeCls(baseCls + '-invalid');
                me.update("Formulario valido");
                tip.setDisabled(true);
                //
            }
            //if (viewTip=="N")
            //{
            tip.hide();
            //}
            //else
            //{
            //    if (!tip.rendered) {
            //        tip.show();
            //    }
            //}
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.Global.SetErrors: " + jsbug)
        }
    },
    //Validar cedula
    ValidarDocumento: function (stexto) {
        var sReturn = "";
        numero = stexto.replace(/^\s+/g, '').replace(/\s+$/g, '');
        if(numero!=""){
            var suma = 0;
            var residuo = 0;
            var pri = false;
            var pub = false;
            var nat = false;
            var numeroProvincias = 22;
            var modulo = 11;

            /* Verifico que el campo no contenga letras */
            var ok=1;
            var  digProvincia = parseInt(numero.substr(0,2));
            if(digProvincia >= 1 || digProvincia <= numeroProvincias) {
                ok=1;
            }
            else
            {
                sReturn='El código de la provincia (dos primeros dígitos) es inválido'; return  sReturn;
            }
            /* Aqui almacenamos los digitos de la cedula en variables. */
            d1 = parseInt(numero.substr(0,1));
            d2 = parseInt(numero.substr(1,1));
            d3 = parseInt(numero.substr(2,1));
            d4 = parseInt(numero.substr(3,1));
            d5 = parseInt(numero.substr(4,1));
            d6 = parseInt(numero.substr(5,1));
            d7 = parseInt(numero.substr(6,1));
            d8 = parseInt(numero.substr(7,1));
            d9 = parseInt(numero.substr(8,1));
            d10 = parseInt(numero.substr(9,1));

            /* El tercer digito es: */
            /* 9 para sociedades privadas y extranjeros */
            /* 6 para sociedades publicas */
            /* menor que 6 (0,1,2,3,4,5) para personas naturales */

            if (d3==7 || d3==8){
                sReturn='El tercer dígito ingresado es inválido';
                return  sReturn;
            }

            /* Solo para personas naturales (modulo 10) */
            if (d3 < 6){
                nat = true;
                p1 = d1 * 2; if (p1 >= 10) p1 -= 9;
                p2 = d2 * 1; if (p2 >= 10) p2 -= 9;
                p3 = d3 * 2; if (p3 >= 10) p3 -= 9;
                p4 = d4 * 1; if (p4 >= 10) p4 -= 9;
                p5 = d5 * 2; if (p5 >= 10) p5 -= 9;
                p6 = d6 * 1; if (p6 >= 10) p6 -= 9;
                p7 = d7 * 2; if (p7 >= 10) p7 -= 9;
                p8 = d8 * 1; if (p8 >= 10) p8 -= 9;
                p9 = d9 * 2; if (p9 >= 10) p9 -= 9;
                modulo = 10;
            }

                /* Solo para sociedades publicas (modulo 11) */
                /* Aqui el digito verficador esta en la posicion 9, en las otras 2 en la pos. 10 */
            else if(d3 == 6){
                pub = true;
                p1 = d1 * 3;
                p2 = d2 * 2;
                p3 = d3 * 7;
                p4 = d4 * 6;
                p5 = d5 * 5;
                p6 = d6 * 4;
                p7 = d7 * 3;
                p8 = d8 * 2;
                p9 = 0;
            }

                /* Solo para entidades privadas (modulo 11) */
            else if(d3 == 9) {
                pri = true;
                p1 = d1 * 4;
                p2 = d2 * 3;
                p3 = d3 * 2;
                p4 = d4 * 7;
                p5 = d5 * 6;
                p6 = d6 * 5;
                p7 = d7 * 4;
                p8 = d8 * 3;
                p9 = d9 * 2;
            }

            suma = p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9;
            residuo = suma % modulo;

            /* Si residuo=0, dig.ver.=0, caso contrario 10 - residuo*/
            digitoVerificador = residuo==0 ? 0: modulo - residuo;

            /* ahora comparamos el elemento de la posicion 10 con el dig. ver.*/
            if (pub==true){
                if (digitoVerificador != d9){
                    sReturn='El ruc de la empresa del sector público es incorrecto.';
                    return  sReturn;
                }
                /* El ruc de las empresas del sector publico terminan con 0001*/
                if ( numero.substr(9,4) != '0001' ){
                    sReturn='El ruc de la empresa del sector público debe terminar con 0001';
                    return  sReturn;
                }
            }
            else if(pri == true){
                if (digitoVerificador != d10){
                    sReturn='El ruc de la empresa del sector privado es incorrecto.';
                    return  sReturn;
                }
                if ( numero.substr(10,3) != '001' ){
                    sReturn='El ruc de la empresa del sector privado debe terminar con 001';
                    return  sReturn;
                }
            }

            else if(nat == true){
                if (digitoVerificador != d10){
                    sReturn='El número de cédula de la persona natural es incorrecto.';
                    return  sReturn;
                }
                if (numero.length >10 && numero.substr(10,3) != '001' ){//&&
                    sReturn='El ruc de la persona natural debe terminar con 001';
                    return  sReturn;
                }
            }
            return  sReturn;
        }
        else
        {
            return "";
        }
    }
},
AppUser.DocumentosGrid = {
    CountModificar : 0,
    IdsNew: {},
    IdsNewOk: {},
    renderUpdateText: function (value) {
        try{
            var txtVal = "";
            var styleColor = "#000000";
            switch (value) {
                case "S": txtVal = "Si"; styleColor = "color:red"; break;
                case "N": txtVal = "No"; styleColor = "font-weight:bold";break;
                case "C": txtVal = "Corregido"; styleColor = "color:green"; break;
            }
            return Ext.String.format('<span style="{0};">{1}</span>', styleColor, txtVal);
        } catch (jsbug) {
            AppGlobalJs.showBug("wucJsTareas.changeSiNO: " + jsbug)
        }
    },
    PrepareCommandReconfigureGrid: function (grid, command, record, row) {
        try
        {

            if (command.command == 'CmdCancel')
            {
                command.hidden = false;
                command.hideMode = 'visibility';
            }
            
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.PrepareCommandReconfigureGrid: " + jsbug);
        }

    },
    ImageCommandReconfigureGrid: function (record, myPanelContent, forPanelComentario,rdgSiNo,winComentario) {
        try
        {
            var myPanel = null;
            
            if (myPanelContent != null) {
                myPanelContent.remove('pnlviewddoc', false);
                myPanel = myPanelContent.add(new Ext.Panel({
                    id: 'pnlviewddoc',
                    border: false,
                    anchor: '100% 100%',
                   
                    loader:
                     {
                         loadMask:
                             {
                                 showMask: true
                             },
                         renderer: "frame",
                         url:"../pgDetailPdf.aspx?idx= "+ record.data.Ruta
                     },
                    bodyPadding: 6,
                    closable: false,

                }));
            }
            forPanelComentario.getForm().loadRecord(record); 
            rdgSiNo.setValue({rdgSiNo_group: record.get('SubirNuevo')});
            AppGlobalJs.showWin(winComentario);
            //App.direct.wucDocUser.UpdateEstado(data.Id, data.SubirNuevo, {
            //    success: function (result) {

            //    },
            //    eventMask: {
            //        showMask: true,
            //        minDelay: 500
            //    }
            //});
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.ImageCommandReconfigureGrid: " + jsbug);
        }
    },
    DelIdsNew: function (key_tmp, value_tmp) {
        try
        {
            delete AppUser.DocumentosGrid.IdsNew[key_tmp];
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.DelIdsNew: " + jsbug);
        }
    },
    DelIdsNewOk: function (key_tmp, value_tmp) {
        try
        {
            AppUser.DocumentosGrid.IdsNew[key_tmp] = value_tmp;
            delete AppUser.DocumentosGrid.IdsNewOk[key_tmp];
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.DelIdsNewOk: " + jsbug);
        }
    },
    //Autentificarse como promotor render de grid para modificar archivos
    PrepareCommandRevision: function (grid, command, record, row) {
        try
        {
        var hddEvento = grid.up().getValue().Evento;
            if (command.command == 'CmdAttach') {
                command.hidden = true;
                command.hideMode = 'display';
                if (hddEvento == "LECTURA") {
                    if (record.get("Id") in AppUser.DocumentosGrid.IdsNew) {
                        command.hidden = false;
                        command.hideMode = 'visibility';
                    }
                }

            }
            if (command.command == 'CmdDelete') {
                command.hidden = true;
                command.hideMode = 'display';
                if (hddEvento == "LECTURA") {
                    if (record.get("Id") in AppUser.DocumentosGrid.IdsNewOk) {
                        command.hidden = false;
                        command.hideMode = 'visibility';

                    }
                }

            }
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.PrepareCommandRevision: " + jsbug);
        }
   },
    PrepareCommand: function (grid, command, record, row) {
    try
    {
            var hddEvento = grid.up().getValue().Evento;
            if (command.command == 'Attach') {
                command.hidden = false;
                command.hideMode = 'visibility';
                if (hddEvento != "LECTURA") {
                    if (record.get("Id") in AppUser.DocumentosGrid.IdsNew) {

                        command.hidden = true;
                        command.hideMode = 'display'; //you can try 'visibility' also
                    }
                }

            }

            if (command.command == 'Delete') {
                command.hidden = true;
                command.hideMode = 'display';
                if (hddEvento != "LECTURA") {
                    if (record.get("Id") in AppUser.DocumentosGrid.IdsNew) {

                        command.hidden = false;
                        command.hideMode = 'visibility';
                    }
                }

            }
            if (command.command == 'View') {
                if (hddEvento != "LECTURA") {
                    if (record.get("Id") in AppUser.DocumentosGrid.IdsNew) {

                        command.hidden = false;
                        command.hideMode = 'visibility';

                    } else {
                        command.hidden = true;
                        command.hideMode = 'display';
                    }
                }

            }
     }catch(jsbug){
        AppGlobalJs.showBug("AppUser.DocumentosGrid.PrepareCommand: " + jsbug);
     }
    },
    //Agregar Id en array tmp
    AddIdsNew :function (key_tmp,value_tmp) {
        try
        {
            AppUser.DocumentosGrid.IdsNew[key_tmp] = value_tmp;
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.AddIdsNew: " + jsbug);
        }
    },
    AddIdsNewOk : function (key_tmp,value_tmp) {
        try
        {
            AppUser.DocumentosGrid.IdsNewOk[key_tmp] = value_tmp;
            delete AppUser.DocumentosGrid.IdsNew[key_tmp];
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.AddIdsNewOk: " + jsbug);
        }
    },
    CreateIdsNew: function (list) {
    try
    {
        var itemList=null;
        AppUser.DocumentosGrid.IdsNew = {};
        for(var i=0;i<list.length;i++)
        {  
            itemList=list[i];
            if (itemList.SubirNuevo == 'S') {
                AppUser.DocumentosGrid.IdsNew[itemList.Id] = itemList.Ruta;
            }
        }
        //if(App.frmCuenta.collapsed==false)
        //    App.frmCuenta.collapse();
        //if(App.frmPromotor.collapsed==false)
        //    App.frmPromotor.collapse();
             
        //else
        //    App.frmCuenta.expand()
    }catch(jsbug){
        AppGlobalJs.showBug("AppUser.DocumentosGrid: " + jsbug);
    }
    },
    ShowBtnsRevision: function(n)
    {
        try
        {
            var btnActivar = window.parent.App.btnRevisar;
            var btnNotificar = window.parent.App.btnNotificar;
            //Botones para Notificar
            if (btnActivar != null & btnNotificar != null) {
                AppUser.DocumentosGrid.CountModificar = (typeof n !== "undefined") ? n : -1;

                if (AppUser.DocumentosGrid.CountModificar == -1) {
                    AppUser.DocumentosGrid.CountModificar = 0;
                    App.gpDocumentosLoad.getStore().each(function (record) {
                        if ('S' == record.get('SubirNuevo'))
                            AppUser.DocumentosGrid.CountModificar += 1;
                    });
                }
                if (AppUser.DocumentosGrid.CountModificar != 0) {
                    btnActivar.hide();
                    btnNotificar.show();
                }
                else {
                    btnActivar.show();
                    btnNotificar.hide();
                }
            }
        }catch(jsbug){
            AppGlobalJs.showBug("AppUser.DocumentosGrid.ShowBtnsRevision: " + jsbug);
        }
            
    },
    //Mostrar ventana para nuevo documento
    ShowWinAddDoc: function (idCt, fileUploadDocUp, ifVersion, record, recordIndex) {
        try
        {
            var winDocumento = Ext.getCmp(idCt + '_' + 'winDocumento');
            //var fileUploadDocUp = Ext.getCmp(idCt + '_' + 'FileUploadDocUp');
            var forPanelDoc = Ext.getCmp(idCt + '_' + 'forPanelDoc');
            var btnDocUpDel = Ext.getCmp(idCt + '_' + 'btnDocUpDel');
            var btnWinDocOk= Ext.getCmp(idCt + '_' + 'btnWinDocOk');
            var txtNombre= Ext.getCmp(idCt + '_' + 'txtNombre');
            var txtDesp= Ext.getCmp(idCt + '_' + 'txtDesp');
            
            wucDocPersonaFn._ShowWinAddDoc(winDocumento,fileUploadDocUp,forPanelDoc,btnDocUpDel,btnWinDocOk,txtNombre,txtDesp,true,record,recordIndex); 
        } catch (jsbug) {
            AppGlobalJs.showBug("AppUser.DocumentosGrid.ShowWinAddDoc: " + jsbug)
        }
    },
    ShowWinDelDoc: function (idCt, fileUploadDocUp, record, recordIndex) {
        try {
            var winDocumento = Ext.getCmp(idCt + '_' + 'winDocumento');
            //var fileUploadDocUp = Ext.getCmp(idCt + '_' + 'FileUploadDocUp');
            var forPanelDoc = Ext.getCmp(idCt + '_' + 'forPanelDoc');
            var btnDocUpDel = Ext.getCmp(idCt + '_' + 'btnDocUpDel');
            var btnWinDocOk= Ext.getCmp(idCt + '_' + 'btnWinDocOk');
            var txtNombre= Ext.getCmp(idCt + '_' + 'txtNombre');
            var txtDesp= Ext.getCmp(idCt + '_' + 'txtDesp');
            wucDocPersonaFn._ShowWinDelDoc(winDocumento, fileUploadDocUp, forPanelDoc, btnDocUpDel, btnWinDocOk, txtNombre, txtDesp, record, recordIndex);
          
        } catch (jsbug) {
            AppGlobalJs.showBug("AppUser.DocumentosGrid.ShowWinDelDoc: " + jsbug)
        }

    }
}